'''
    Faker库的应用：
        非常实用的数据生成库。
        在实际测试过程中，我们需要做大批量数据筹备时，可以非常方便地生成你想要的数据内容。
        Faker有很多内容是没有自动补全的，需要你自己去记忆以及网上查询。因为是第三方库，所以需要
        额外安装：
            pip install faker
        生成的数据是固定的，我们可以结合我们自己的实际业务做对应的二次计算。
        数据生成的过程是会关联到很多方面的信息，所以在实际实现时，一般会关联faker、random等一系列的
        各种库，来实现你的数据组的完整生成。不要单独只关注到faker一个库。
        在创建数据的过程中，思维一定要打开。
'''
import random

from faker import Faker
from faker.providers import BaseProvider

# Faker示例
faker = Faker('zh_CN')  # 创建中文faker对象


#
# print(faker.profile())  # 生成随机的个人档案
#
# print(faker.name())  # 随机姓名
# print(faker.address())  # 地址
# print(faker.email())  # 邮箱
# print(faker.date())  # 年月日
# print(faker.ssn())  # 身份证
# print(faker.date_time())  # 时分秒
# print(faker.phone_number())  # 手机号码
#
# print(faker.random_int(min=18, max=70))


# Faker自定义数据内容生成
# class HccProvider(BaseProvider):  # 继承BaseProvider实现数据的自定义生成
#     def sku(self):  # 定义数据产生的格式与内容
#         part1 = ''.join(random.choices('ABCDEFG', k=2))
#         part2 = ''.join(random.choices('1234567890', k=4))
#         return f'{part1}---{part2}'
#
#
# # 获取自定义数据内容
# faker = Faker()
# faker.add_provider(HccProvider)  # 自定义数据生成加入到Faker之中
# print(faker.sku())  # 生成自定义数据格式数据

# 基于业务需求，生成数据组格式
def person_profile():  # 封装数据格式组
    profile = {
        'name': faker.name(),
        'age': faker.random_int(min=18, max=50),
        'email': faker.email(),
        'ssn': faker.ssn()
    }
    return profile


print(person_profile())
